package com.atguigu.gulimall.order;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

import java.io.IOException;


/**
 * 本地事务失效问题
 * 同一个对象内事务方法互调默认失效，原因 绕过了代理对象，事务使用代理对象来控制的
 * 解决：使用代理对象来调用事务方法
 *  1）、引入aop-starter;spring-boot-starter-aop; 引入了aspectj
 *  2）、@EnableAspectJAutoProxy(exposeProxy = true); 开启 aspectj 动态代理功能。
 *  以后所有的动态代理都是aspectj 对外暴露的对象
 *  3）、本类互调用调用对象
 *      OrderServiceImpl orderServiceImpl = (OrderServiceImpl) AopContext.currentProxy();
 *          
 */
@EnableRedisHttpSession
@EnableAspectJAutoProxy(exposeProxy = true)
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallOrderApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(GulimallOrderApplication.class, args);
    }
    
}
